Speculative Parallelism in Cilk++
نویسندگان
چکیده
Backtracking search algorithms are useful in many domains, from SAT solvers to artificial intelligences for playing games such as chess. Searching disjoint branches can, inherently be done in parallel though it can considerably increase the amount of work that the algorithm does. Such parallelism is speculative, once a solution is found additional work is irrelevant, but the individual branches each have their own potential to find the solution. In sequential algorithms, heuristics are used to prune regions of the search space. In parallel implementations this pruning often corresponds to aborting existing computations that can be shown to be pursuing dead-ends. While some systems provide native support for aborting work, Intel’s current parallel extensions to C++, implemented in the cilk++ compiler [Lei09], do not. In this work, we show several methods for implementing abort as a library in the cilk++ system. We compare our implementations to each other and quantify the benefit of abort in a real game AI. We derive a mostly mechanical translation to convert programs with native abort into cilk++ using continuation passing style.
منابع مشابه
Executing multithreaded programs efficiently
This thesis presents the theory, design, and implementation of Cilk (pronounced “silk”) and Cilk-NOW. Cilk is a C-based language and portable runtime system for programming and executing multithreaded parallel programs. Cilk-NOW is an implementation of the Cilk runtime system that transparently manages resources for parallel programs running on a network of workstations. Cilk is built around a ...
متن کاملA On-the-Fly Pipeline Parallelism
Pipeline parallelism organizes a parallel program as a linear sequence of stages. Each stage processes elements of a data stream, passing each processed data element to the next stage, and then taking on a new element before the subsequent stages have necessarily completed their processing. Pipeline parallelism is used especially in streaming applications that perform video, audio, and digital ...
متن کاملParallel Programming of General-Purpose Programs Using Task-Based Programming Models
The prevalence of multicore processors is bound to drive most kinds of software development towards parallel programming. To limit the difficulty and overhead of parallel software design and maintenance, it is crucial that parallel programming models allow an easy-to-understand, concise and dense representation of parallelism. Parallel programming models such as Cilk++ and Intel TBBs attempt to...
متن کامل, Volume 31 , Number 4 Programming Parallel Applications In
Cilk (pronounced “silk”) is a C-based algorithmic, multithreaded language for parallel programming being developed at the MIT Laboratory for Computer Science. Cilk makes it easy to program irregular parallel applications, especially as compared with data-parallel or message-passing programming systems. Many regular and irregular Cilk applications run nearly as fast as comparable C programs on o...
متن کاملCost Model: Work, Span and Parallelism
In this class, we will overview various parallel programming technology developed. One of the technology we will examine closely is Cilk, a C/C++ based concurrency platform. Before we overview the development and implementation of Cilk, we shall first overview a brief history of Cilk technology to account for where the major concepts originate. Cilk technology has developed and evolved over mor...
متن کامل